package cn.tedu.charging.order.amqp;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 随着业务 发送消息数据发生变化
 */
@Component
@Slf4j
public class AmqpProducer<T> {
    @Autowired
    private RabbitTemplate rabbitTemplate;
    //根据需求 定义多种发送消息的方法
    /**
     * param入参
     * T msg: 消息体内容 可以传递业务对象
     * String destination: 交换机名称
     * String routingKey: 路由key
     * return 返回值
     * boolean: true 发送成功 false 发送失败
     */
    public boolean send(T msg,String destination,String routingKey){
        try{
            rabbitTemplate.convertAndSend(destination,routingKey,msg);
            return true;
        }catch (Exception e){
            log.error("发送消息失败,交换机:{},路由key:{},消息体:{}",destination,routingKey,msg,e);
        }
        return false;
    }
    public boolean send(T msg,String destination){
        try{
            rabbitTemplate.convertAndSend(destination,"",msg);
            return true;
        }catch (Exception e){
            log.error("发送消息失败,交换机:{},消息体:{}",destination,msg,e);
        }
        return false;
    }
}
